<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			/*
			 * 基本数据类型
			 * 	String Number Boolean Null Undefined
			 * 引用数据类型
			 * 	Object
			 * 
			 * 在JS中为我们提供了三个包装类，通过这三个包装类可以将基本数据类型的数据转换为对象
			 * 	String()
			 * 		- 可以将基本数据类型字符串转换为String对象
			 * 	Number()
			 * 		- 可以将基本数据类型的数字转换为Number对象
			 *  Boolean()
			 * 		- 可以将基本数据类型的布尔值转换为Boolean对象
			 * 	但是注意：我们在实际应用中不会使用基本数据类型的对象，
			 * 		如果使用基本数据类型的对象，在做一些比较时可能会带来一些不可预期的结果
			 */
			
			// 创建一个Number类型的对象
			var num = new Number(3);  // console.log(typeof num) --> object  
			num.hello = "abc"; // 向num中添加一个属性

			var str = new String("hello");
			var str2 = new String("hello");
			var bool = new Boolean(true);
			var bool2 = true;
			
			console.log(bool == bool2); // true; 会自动类型转换
			console.log(bool === bool2); // false;
			
			// if (Boolean(true)) // true
			// if (Boolean(false)) // true
			
			/*
			 * 方法和属性只能添加给对象，不能添加给基本数据类型
			 * 		当我们对一些基本数据类型的值去调用属性和方法时，
			 * 		浏览器会临时使用包装类将其转换为对象，然后再调用对象的属性和方法
			 * 		调用完以后，再将其转换为基本数据类型
			 */
			var s = 123; // 基本数据类型
			s = s.toString(); // 会临时使用包装类转换为对象，再调用对象的方法
			
			
		</script>
	</head>
	<body>
	</body>
</html>
